class BlockRenderer : public IBlockRenderer
{
public:
	ITexture *Texture;
	Point2i TopTexturePosition;
	Point2i SideTexturePosition;
	Point2i BottomTexturePosition;

	BlockRenderer(ITexture *texture, const Point2i &top, const Point2i &side, const Point2i &bottom) :
		Texture(texture),
		TopTexturePosition(top),
		SideTexturePosition(side),
		BottomTexturePosition(bottom)
	{
	}

	BlockRenderer(ITexture *texture, Point2i top, Point2i side) :
		Texture(texture),
		TopTexturePosition(top),
		SideTexturePosition(side),
		BottomTexturePosition(top)
	{
	}

	BlockRenderer(ITexture *texture, Point2i top) :
		Texture(texture),
		TopTexturePosition(top),
		SideTexturePosition(top),
		BottomTexturePosition(top)
	{
	}

	int GetTypeData(const int &data) { return data; }

	virtual void Render(Schematic *schematic, RendererBase *renderer, const Block &block, const Point3i &position)
	{
		renderer->Draw(Box(Texture).SetAll(SideTexturePosition).SetTop(TopTexturePosition).SetBottom(BottomTexturePosition));
	}
};